package simbot.example.listener.event.message.group.request.info;

import catcode.CatCodeUtil;
import catcode.Neko;
import com.sun.org.apache.bcel.internal.util.ClassPath;
import lombok.extern.slf4j.Slf4j;
import love.forte.simbot.annotation.Filter;
import love.forte.simbot.annotation.Filters;
import love.forte.simbot.annotation.OnGroup;
import love.forte.simbot.api.message.MessageContent;
import love.forte.simbot.api.message.containers.GroupAccountInfo;
import love.forte.simbot.api.message.containers.GroupInfo;
import love.forte.simbot.api.message.events.GroupMsg;
import love.forte.simbot.api.sender.Sender;
import love.forte.simbot.filter.MatchType;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import simbot.example.utils.hero.HeroUtil;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;

/**
 * 群消息-请求信息-监听
 *
 * @author minmin
 * @since 2021/06/26 0:25
 */
@Service
@Slf4j
public class GroupInfoListen {
    /*    @Value("${upload.img}")
        private String img;*/
    //本地测试用 静态路径配置
    private  static  String  classPath = GroupInfoListen.class.getResource("/").getPath();
    //销魂拖把图
  // private static final String img01 = classPath + "static/img/2.jpg";
    //春黑动图
   // private static final String img03 = classPath + "static/img/3.gif";
    private static final String img01 = "/xqf/robot/img/2.jpg";
    private static final String img03 = "/xqf/robot/img/3.gif";
    @OnGroup
    @Filters(value = {
            @Filter(value = "三百英雄帮助", matchType = MatchType.EQUALS)
    })
    public void  HeroHelp(GroupMsg groupMsg, Sender sender){
        String text = "个人信息查询:个人信息 角色昵称\n" +
                "个人战绩查询:个人战绩 角色昵称\n";
    }
    @OnGroup
    @Filters(value = {
            @Filter(value = "个人信息", matchType = MatchType.STARTS_WITH)
    })
    public void HeroMemberMsg(GroupMsg groupMsg, Sender sender) {
        GroupInfo groupInfo = groupMsg.getGroupInfo();
        String text = groupMsg.getText();
        String[] s = StringUtils.split(text, " ");
        if (Objects.isNull(s) || s.length == 1) {
            sender.sendGroupMsg(groupInfo.getGroupCodeNumber(), "您的输入有误");
            return;
        }
        String getrole = HeroUtil.getrole(s[1]);
        GroupAccountInfo accountInfo = groupMsg.getAccountInfo();
        log.debug(groupInfo.getGroupName() + "|" + accountInfo.getAccountNickname() + "|" + getrole);
        sender.sendGroupMsg(groupInfo.getGroupCodeNumber(), "您查询角色|" + s[1] + "|:" + getrole);
    }

    @OnGroup
    @Filters(value = {
            @Filter(value = "个人战绩", matchType = MatchType.STARTS_WITH)
    })
    public void HeroMemberList(GroupMsg groupMsg, Sender sender) {
        GroupInfo groupInfo = groupMsg.getGroupInfo();
        String text = groupMsg.getText();
        String[] s = StringUtils.split(text, " ");
        if (Objects.isNull(s) || s.length == 1) {
            sender.sendGroupMsg(groupInfo.getGroupCodeNumber(), "您的输入有误");
            return;
        }
        String getlist = HeroUtil.getlist(s[1]);
        GroupAccountInfo accountInfo = groupMsg.getAccountInfo();
        log.debug(groupInfo.getGroupName() + "|" + accountInfo.getAccountNickname() + "|" + getlist);
        sender.sendGroupMsg(groupInfo.getGroupCodeNumber(), "您查询角色战绩|" + s[1] + "|:\n" + getlist);
    }

    @OnGroup
    @Filters(value = {
            @Filter(value = "慧慧爆裂魔法", matchType = MatchType.STARTS_WITH)
    })
    public void huihui(GroupMsg groupMsg, Sender sender) {
        GroupInfo groupInfo = groupMsg.getGroupInfo();
        CatCodeUtil util = CatCodeUtil.INSTANCE;
        String image = util.toCat("image", true, "url=https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=149439146,3713236803&fm=26&gp=0.jpg");
        GroupAccountInfo accountInfo = groupMsg.getAccountInfo();
        log.debug(groupInfo.getGroupName() + "|" + accountInfo.getAccountNickname() + "|" + "爆裂魔法");
        sender.sendGroupMsg(groupInfo.getGroupCodeNumber(), "我が名はめぐみん、红魔族随一の魔法の使い手にして、爆裂魔法を操りし者、我が力、见るが良い！Explosion!" + image);
    }

    @OnGroup
    @Filters(value = {
            @Filter(value = "时间", matchType = MatchType.STARTS_WITH)
    })
    public void Time(GroupMsg groupMsg, Sender sender) {
        LocalDateTime now = LocalDateTime.now();
        sender.sendGroupMsg(groupMsg, now.toString());
    }

    @OnGroup
    @Filters(value = {
            @Filter(value = "小魂", matchType = MatchType.STARTS_WITH)
    })
    public void xiaohun(GroupMsg groupMsg, Sender sender) {
        // 打印此次消息中的 纯文本消息内容。
        // 纯文本消息中，不会包含任何特殊消息（例如图片、表情等）。
        //System.out.println(groupMsg.getText());

        // 打印此次消息中的 消息内容。
        // 消息内容会包含所有的消息内容，也包括特殊消息。特殊消息使用CAT码进行表示。
        // 需要注意的是，绝大多数情况下，getMsg() 的效率低于甚至远低于 getText()
        //System.out.println(groupMsg.getMsg());

        // 获取此次消息中的 消息主体。
        // messageContent代表消息主体，其中通过可以获得 msg, 以及特殊消息列表。
        // 特殊消息列表为 List<Neko>, 其中，Neko是CAT码的封装类型。
        MessageContent msgContent = groupMsg.getMsgContent();

        // 打印消息主体
        //System.out.println(msgContent);
        // 打印消息主体中的所有图片的链接（如果有的话）
        List<Neko> imageCats = msgContent.getCats("image");
        //System.out.println("img counts: " + imageCats.size());
        for (Neko image : imageCats) {
            System.out.println("Img url: " + image.get("url"));
        }


        // 获取发消息的人。
        GroupAccountInfo accountInfo = groupMsg.getAccountInfo();
        // 打印发消息者的账号与昵称。
        //System.out.println(accountInfo.getAccountCode());
        //System.out.println(accountInfo.getAccountNickname());


        // 获取群信息
        GroupInfo groupInfo = groupMsg.getGroupInfo();
        // 打印群号与名称
        //System.out.println(groupInfo.getGroupCode());
        //System.out.println(groupInfo.getGroupName());
        //CatCodeUtil instance = CatCodeUtil.getInstance();
        //String image = instance.toCat("image", true, img01 + "2.jpg");
        String image = CatCodeUtil.getInstance().getStringCodeBuilder("image", true).key("file").value(img01).build();
        log.debug(groupInfo.getGroupName() + "|" + accountInfo.getAccountNickname() + "|" + "托把小魂");
        sender.sendGroupMsg(groupInfo.getGroupCodeNumber(), "是铁拖把" + image);
    }

    @OnGroup
    @Filters(value = {
            @Filter(value = "摸摸头", matchType = MatchType.STARTS_WITH)
    })
    public void msgTalk01(GroupMsg groupMsg, Sender sender) {
        // 打印此次消息中的 纯文本消息内容。
        // 纯文本消息中，不会包含任何特殊消息（例如图片、表情等）。
        //System.out.println(groupMsg.getText());

        // 打印此次消息中的 消息内容。
        // 消息内容会包含所有的消息内容，也包括特殊消息。特殊消息使用CAT码进行表示。
        // 需要注意的是，绝大多数情况下，getMsg() 的效率低于甚至远低于 getText()
        //System.out.println(groupMsg.getMsg());

        // 获取此次消息中的 消息主体。
        // messageContent代表消息主体，其中通过可以获得 msg, 以及特殊消息列表。
        // 特殊消息列表为 List<Neko>, 其中，Neko是CAT码的封装类型。

        //MessageContent msgContent = groupMsg.getMsgContent();

        // 打印消息主体
        //System.out.println(msgContent);
        // 打印消息主体中的所有图片的链接（如果有的话）
        //List<Neko> imageCats = msgContent.getCats("image");
        //System.out.println("img counts: " + imageCats.size());
        //for (Neko image : imageCats) {
        //    System.out.println("Img url: " + image.get("url"));
        // }


        // 获取发消息的人。
        //GroupAccountInfo accountInfo = groupMsg.getAccountInfo();
        // 打印发消息者的账号与昵称。
        // System.out.println(accountInfo.getAccountCode());
        // System.out.println(accountInfo.getAccountNickname());


        // 获取群信息
        GroupInfo groupInfo = groupMsg.getGroupInfo();
        // 打印群号与名称
        //System.out.println(groupInfo.getGroupCode());
        //System.out.println(groupInfo.getGroupName())
        CatCodeUtil util = CatCodeUtil.INSTANCE;
        String image = util.toCat("image", true, "url=https://bkimg.cdn.bcebos.com/pic/5bafa40f4bfbfbedab6440f5efb9e036afc37831b1aa?x-bce-process=image/watermark,image_d2F0ZXIvYmFpa2UxNTA=,g_7,xp_5,yp_5/format,f_auto");
        GroupAccountInfo accountInfo = groupMsg.getAccountInfo();
        log.debug(groupInfo.getGroupName() + "|" + accountInfo.getAccountNickname() + "|" + "小仓唯");
        sender.sendGroupMsg(groupInfo.getGroupCodeNumber(), image);

    }

    @OnGroup
    @Filters(value = {
            @Filter(value = "谁在嘴硬", matchType = MatchType.EQUALS),
            @Filter(value = "谁是恶魔小丑", matchType = MatchType.EQUALS),
            @Filter(value = "那不然?", matchType = MatchType.EQUALS),
            @Filter(value = "那不然？", matchType = MatchType.EQUALS),
            @Filter(value = "谁是鸭嘴兽", matchType = MatchType.EQUALS)
    })
    public void getXiaohun(GroupMsg groupMsg, Sender sender) {
        sender.sendGroupMsg(groupMsg, "是小魂!");
    }

    @OnGroup
    @Filters(value = {
            @Filter(value = "嘴硬", matchType = MatchType.CONTAINS)
    })
    public void getZuiying(GroupMsg groupMsg, Sender sender) {
        sender.sendGroupMsg(groupMsg, "小魂还在嘴硬?");
    }

    @OnGroup
    @Filters(value = {
            @Filter(value = "空桑", matchType = MatchType.CONTAINS)
    })
    public void getKongsang(GroupMsg groupMsg, Sender sender) {
        sender.sendGroupMsg(groupMsg, "又和烂人比?");
    }

    @OnGroup
    @Filters(value = {
            @Filter(value = "什么啊", matchType = MatchType.EQUALS)
    })
    public void getSma(GroupMsg groupMsg, Sender sender) {
        sender.sendGroupMsg(groupMsg, "什么啊?");
    }

    @OnGroup
    @Filters(value = {
            @Filter(value = "春黑", matchType = MatchType.CONTAINS)
    })
    public void newYearBurst(GroupMsg groupMsg, Sender sender){
        String image = CatCodeUtil.getInstance().getStringCodeBuilder("image", true).key("file").value(img03).build();
        sender.sendGroupMsg(groupMsg,image+"\n正在播放：New Year Burst\n──●━━━━ 1:05/1:30\n⇆ ㅤ◁ ㅤㅤ❚❚ ㅤㅤ▷ ㅤ↻");
    }
}
